public class code3 {
    public int longestArithSeqLength(int[] nums) {
        int n = nums.length;

        Map<Integer,Integer> hash = new HashMap<>();//<元素，下标>
        hash.put(nums[0],0);

        int[][] dp = new int[n][n];

        //初始化
        for(int i=0;i<n;i++)
            Arrays.fill(dp[i],2);

        int ret = 2;
        for(int i=1;i<n;i++) {//固定倒数第一个数
            for(int j=i+1;j<n;j++) {//固定倒数第二个数
                int a = 2*nums[i]-nums[j];//第一个数
                if(hash.containsKey(a)) {
                    dp[i][j]=dp[hash.get(a)][i]+1;
                    ret = Math.max(ret,dp[i][j]);
                }
            }
            hash.put(nums[i],i);
        }
        return ret;

    }
}
